package net.zoneland.greenleaf.log.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONObject;
import net.zoneland.greenleaf.common.pagination.Pagination;
import net.zoneland.greenleaf.log.entity.Log_method_call;
import net.zoneland.greenleaf.log.service.Log_method_callServiceI;
import net.zoneland.greenleaf.system.controller.BaseController;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.util.HtmlUtils;

/**
 * LOG_METHOD_CALL[服务调用日志]表操作控制层（Controller|Action）

 * 类   名：Log_method_callController<br/>
 * 表   名：LOG_METHOD_CALLCONTROLLER<br/>
 * 注   释：<br/>
 * 作   者：GREENLEAF<br/>
 * 单   位：浙江兰德纵横网络技术有限公司<br/>
 * 日   期：2014-09-03 20:35:13
**/
@Controller
@RequestMapping("log_method_call")
public class Log_method_callController extends BaseController {
	
	/**
	 * 如果需要系统对此Controller的访问进行监控，记录服务访问的时间，耗时，那么请将monitor属性设置为“true”
	 */
	public boolean monitor = false; 
  
	public static Logger logger = Logger.getLogger(Log_method_callController.class);
	//获取类的名称
	private String clazzName = new Object() {
	  	public String getClassName() {
	  		String clazzName = this.getClass().getName();
	  		return clazzName.substring(0, clazzName.lastIndexOf('$'));
	  	}
	}.getClassName();
  
	/**
	 * log_method_callService
	 * @param log_method_callService
	**/
	@Autowired
	private Log_method_callServiceI log_method_callService;

	/**
	 * 获取服务调用日志列表
	 * 返回JSON格式数据
	 * @param String jsonstring
	**/
	@RequestMapping(value = "rss/getList")
	@ResponseBody
	public Object getList(String jsonstring) {

		logger.debug("getList方法接收到传入的参数：jsonstring="+jsonstring);
		String page = "1";
		Integer pagesize = 20, totalRecord=0;
		Map<String, Object> paramMap = null, map=new HashMap<String,Object>();
		try {
			JSONObject object = JSONObject.fromObject(jsonstring);
			paramMap = (Map) JSONObject.toBean(object, Map.class);
		} catch (Exception e) {
			map.put("result", "error");
			map.put("message", "参数列表初始化错误，可能不是合法的JSON数据格式！");
			return map;
		}
		if(paramMap!=null){
			if(paramMap.get("page")!=null){
				page = paramMap.get("page").toString();
			}
			if(paramMap.get("pagesize") != null){
				try{
					pagesize = Integer.parseInt(paramMap.get("pagesize").toString());
				}catch(Exception e){
					pagesize = 20;
				}
			}
			try{
				List list  = null;
				logger.debug("根据条件查询数据总条数...");
				totalRecord=log_method_callService.getListCount(paramMap);
				logger.debug("开始设置分页信息...");
				Pagination pagination=Pagination.newPagination(pagesize, page, totalRecord);
				paramMap.put("startRow", pagination.getStartRow());
				paramMap.put("pageSize", pagesize );
				if( totalRecord>0 ){					logger.debug("根据条件查询一页展现的信息...");
					list  = log_method_callService.getList(paramMap);
				} else {
					list = new ArrayList();
				}
				map.clear();
				logger.debug("查询成功，向客户端返回信息...");
				map.put("result", "success");
				map.put("message", "服务调用日志信息查询成功！");
				map.put("pagination", pagination);
				map.put("list", list);
			}catch(Exception e){
				map.put("result", "error");
				map.put("message", "服务调用日志信息数据查询出错，请联系管理员！");
			}
		} else{
			map.put("result", "error");
			map.put("message", "参数列表为空，无法进行数据查询！");
		}
		
		return map;
}
	/**
	 * 增加或编辑一个服务调用日志信息
	 * 返回JSON格式数据
	 * @param String jsonstring
	**/
	@RequestMapping(value = "addOrUpdate")
	@ResponseBody
	public Object addOrUpdate(String jsonstring ){

		logger.debug("addOrUpdate方法接收到传入的参数：jsonstring="+jsonstring );
		Map<String, Object>map=new HashMap<String, Object>();
		Log_method_call log_method_call = null;
		try {
			logger.debug("addOrUpdate方法将收到的参数传换为具体对象...");
			JSONObject object=JSONObject.fromObject(jsonstring);
			log_method_call = ( Log_method_call )JSONObject.toBean(object, Log_method_call.class);
		} catch (Exception e) {
			logger.debug("addOrUpdate方法将收到的参数传换为具体对象失败。");
			map.put("result", "error");
			map.put("message", "参数列表初始化错误，可能不是合法的JSON数据格式！");
			return map;
		}
		try{
			logger.debug("addOrUpdate方法新增或者更新信息记录..." );
			log_method_callService.addOrUpdate( log_method_call );
			logger.debug("addOrUpdate方法新增或者更新数据成功。");
			map.put("result", "success");
			map.put("message", "成功保存服务调用日志信息！");
			map.put("exception", "");
		}catch(Exception e){
			logger.debug("addOrUpdate方法新增或者更新数据失败。");
			map.put("result", "error");
			map.put("message", "保存服务调用日志信息失败!");
			map.put("exception", "");
			logger.error("保存服务调用日志信息失败", e);
		}
		return map;
	}
	/**
	 * 根据ID删除一个服务调用日志信息
	 * 返回JSON格式数据
	 * @param int id
	**/
	@RequestMapping(value = "deleteById")
	@ResponseBody
	public Object deleteById(int id){
		logger.debug("deleteById方法接收到传入的参数：id="+id);
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			map.put("id", id);
			logger.debug("deleteById方法根据条件删除多条数据...");
			log_method_callService.delete(map);
			logger.debug("deleteById方法删除数据成功");
			map.clear();
			map.put("result", "success");
			map.put("message", "成功删除一个服务调用日志信息！");
			map.put("exception", "");
		} catch (Exception e) {
			map.clear();
			map.put("result", "error");
			map.put("message", "删除服务调用日志信息失败!");
			map.put("exception", "");
			logger.error("删除服务调用日志信息失败", e);
		}
		return map;
	}
	/**
	 * 根据ID删除多个服务调用日志信息
	 * 返回JSON格式数据
	 * @param String ids
	**/
	@RequestMapping(value = "deleteByIds")
	@ResponseBody
	public Object deleteByIds(String ids){
		logger.debug("deleteByIds方法接收到传入的参数：ids="+ids);
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			map.put("ids", ids.split(","));
			logger.debug("deleteByIds方法根据条件删除多条数据...");
			log_method_callService.delete(map);
			logger.debug("deleteByIds方法删除数据成功");
			map.clear();
			map.put("result", "success");
			map.put("message", "成功删除服务调用日志信息！");
			map.put("exception", "");
		} catch (Exception e) {
			map.clear();
			map.put("result", "error");
			map.put("message", "删除服务调用日志信息失败!");
			map.put("exception", "");
			logger.error("删除服务调用日志信息失败", e);
		}
		return map;
	}
}
